package com.lsh.rabbitmqutil;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.rabbit.support.CorrelationData;

/**
 * @author ：LiuShihao
 * @date ：Created in 2020/8/19 5:21 下午
 * @desc ：消息只要被 rabbitmq broker 接收到就会触发 confirmCallback 回调 。
 * •	correlationData：对象内部只有一个 id 属性，用来表示当前消息的唯一性。
 * •	ack：消息投递到broker 的状态，true表示成功。
 * •	cause：表示投递失败的原因。
 */
@Slf4j
//@Component
public class ConfirmCallbackService implements RabbitTemplate.ConfirmCallback {

    @Override
    public void confirm(CorrelationData correlationData, boolean ack, String cause) {

        if (!ack) {
            log.error("消息发送异常!");
        } else {
            log.info("生产者已经收到确认,ack="+ack+", cause="+cause);//ack=true, cause=null
        }
    }
}

